App.directive("edTimePicker", [ function() {
    return {
        restrict: "A",
        require: "?ngModel",
        link: function(scope, elem, attrs, ngModelController) {
            $(elem).datetimepicker.dates["zh-CN"] = {
                days: [ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" ],
                daysShort: [ "周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日" ],
                daysMin: [ "日", "一", "二", "三", "四", "五", "六", "日" ],
                months: [ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" ],
                monthsShort: [ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" ],
                today: "今天",
                suffix: [],
                meridiem: [ "上午", "下午" ]
            };
            var options = {
                language: "zh-CN",
                orientation: "right",
                autoclose: true,
                todayHighlight: true
            };
            if (angular.isDefined(attrs.options)) {
                angular.extend(options, AppUtil.jsonfy(attrs.options));
            }
            options.format = options.format || "yyyy-mm-dd hh:ii:ss";
            if (options.format.indexOf("hh") >= 0 && options.format.indexOf("ii") < 0) {
                options.minView = 1;
            }
            if (options.format.indexOf("dd") < 0) {
                options.startView = 1;
            }
            $(elem).datetimepicker(options).on("show", function(ev) {
                if (options.startView == 1) {
                    $(".datetimepicker:visible").find("thead th").height(1).css("visibility", "hidden").empty().html("");
                }
            }).on("show", function(event) {
                event.preventDefault();
                event.stopPropagation();
            });
            if (ngModelController) {
                ngModelController.$render = function(manualRender) {
                    if (!manualRender && ngModelController.$viewValue) {
                        var format2 = options.format.toUpperCase().replace("II", "mm");
                        var value = moment(ngModelController.$viewValue).format(format2);
                        if (value != "Invalid date" && value != ngModelController.$viewValue) {
                            ngModelController.$setViewValue(value);
                            ngModelController.$render(true);
                            return;
                        }
                    }
                    $(elem).val(ngModelController.$viewValue);
                };
            }
        }
    };
} ]);